<?php
// 方弦研究所
namespace fxapp\oracle;

/**
 * 基础类
 */
class Base
{
    /**
     * 入参
     * @var array
     */
    private $param = [];

    /**
     * 初始化
     * @param array $param 参数
     * @return mixed
     */
    public function init($param = null)
    {
        // 初始化变量
        if (!is_array($param)) {
            $param = \fxapp\Client::param();
        }
        // 检测模式
        if (PHP_SAPI === 'cli') {
            $route = \fxapp\Base::config('app.param.cli');
            $param = \fxapp\Param::merge($param, $route);
        }
        // 适配入参
        $param = $this->paramAdapter($param);
        // 设置入参
        $this->param($param);
    }

    /**
     * 获取/设置-入参
     * @param mixed $data 数据
     * @return mixed
     */
    public function param($data = null)
    {
        if (is_null($data)) {
            return $this->param;
        } else {
            $this->param = $data;
        }
    }

    /**
     * 入参更新
     * @param array $data 数据
     * @return mixed
     */
    public function paramUpdate($data = null)
    {
        if (!is_array($data)) return false;
        $data = \fxapp\Param::merge($this->param, $data);
        $this->param($data);
    }

    /**
     * 入参适配器
     * @access public
     * @param string $param 参数
     * @return mixed
     */
    public function paramAdapter($param)
    {
        // 初始化变量
        $predefined = [
            // 基础-数据
            'base', 'data',
        ];
        $param = \fxapp\Param::define([$param, $predefined], '1.2.3');
        $predefined = [
            // 调试
            'debug',
        ];
        $param['base'] = \fxapp\Param::define([$param['base'], $predefined], '1.2.2');
        // 设置配置
        \fxapp\Base::Config('app.debug.level', $param['base']['debug']);
        return $param;
    }
}
